package com.cebbank.group.demoweb.commponent;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;

@Component
@Lazy
public class LazyInitComponent implements InitializingBean {
    @Value("${server.port}")
    private int port;
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("afterPropertiesSet:"+port);
//        throw new RuntimeException("afterPropertiesSet failed");
        //@Lazy保证LazyInitComponent不会第一时间被容器管理，只有在第一次被使用的时候才会进行初始化
        //须在在改组件和被注入的地方都使用@Lazy，如HelloController里面@Autowired的时候也使用该注解
        //所以一些本地环境无法运行的代码影响到了系统启动，可以通过这种方式
    }

    public void say(){
        System.out.println("hello world");
    }
}
